var request=new XMLHttpRequest();
var casOrigen;
var colorOrigen;
var casDestino;
var colorDestino;
var colorActual;
var idTablero;
var puedeJugar;

function cargarJugadores() {
	cargarJugador();
	request.open("post", "JugadoresConectados.action");
	request.onreadystatechange=actualizar;
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send();
}

function addJugador(email){
	var tabla=document.getElementById("salaDeEspera");
	var trow=document.createElement("tr");
	trow.setAttribute("id","trMov");
	var tdizq=document.createElement("td");
	var tdDcha=document.createElement("td");
	tdizq.textContent=email;	
	if (jugadorLocal!=null) {

		var boton=document.createElement("input");
		boton.setAttribute("type", "button");
		boton.setAttribute("value", "Retarlo");		
		boton.setAttribute("onclick", "jugadorLocal.retar(\"" + email + "\")");
		tdDcha.appendChild(boton);
	}
	trow.appendChild(tdizq); //el nombre del jugador
	trow.appendChild(tdDcha); //el botoncito de retar
	tabla.appendChild(trow);

				
}

//actualiza la zona de jugadores conectados, crea una tabla y mete los jugadores conectados
function actualizar() {
	if (request.readyState==4) {
		var jugadoresConectados=document.getElementById("jugadoresConectados");
		if(jugadoresConectados.hasChildNodes()){
			jugadoresConectados.removeChild(jugadoresConectados.firstChild);
		}
		var tabla=document.createElement("table");
		tabla.setAttribute("id","salaDeEspera"); //añadido id
		var tbody=document.createElement("tbody");
		tabla.appendChild(tbody);
		var cabecera=document.createElement("th");
		cabecera.textContent="Sala de espera";
		tbody.appendChild(cabecera);
	
		var respuesta=request.responseText;
		var result=JSON.parse(respuesta);
		for (var i=0; i<result.jugadoresConectados.length; i++) {
			var trow=document.createElement("tr");
			tbody.appendChild(trow);
			var tdIzda=document.createElement("td");
			tdIzda.textContent=result.jugadoresConectados[i].email;
			trow.appendChild(tdIzda);
			var tdDcha=document.createElement("td");
			if (jugadorLocal!=null) {
				var boton=document.createElement("input");
				boton.setAttribute("type", "button");
				boton.setAttribute("value", "Retarlo");
				boton.setAttribute("onclick", "jugadorLocal.retar(\"" + result.jugadoresConectados[i].email + "\")");
				tdDcha.appendChild(boton);
			}
			trow.appendChild(tdDcha);
		}			
		jugadoresConectados.appendChild(tabla);
	}
}

/*** Clase Jugador y algunas operaciones relacionadas ***/
var jugadorLocal;

function identificar() {
	//Coge parametros del form de cabecera
	var formIdentificacion=document.getElementById("formIdentificacion");
	var email=formIdentificacion.getElementsByTagName("input")["email"].value;
	var pwd=formIdentificacion.getElementsByTagName("input")["pwd"].value;
	var pars="email=" + email + "&pwd=" + pwd; 
	
	//Crea un request
	var req=new XMLHttpRequest();
	req.open("post", "Identificar.action");
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	
	req.onreadystatechange=function() {
		if (req.readyState==4) {
			var result=JSON.parse(req.responseText);
			if (result.resultado=="OK") {
				jugadorLocal=new Jugador(email);
				jugadorLocal.save();
				document.location.reload();
			}
		}
	};
	req.send(pars);
}


function cargarJugador() {
	var cadena=sessionStorage.jugadorLocal;
	if (cadena!=null) {
		var objeto=eval("(" + cadena + ")");
		jugadorLocal=new Jugador(objeto.email);
	}
}

function Jugador(email) { //llama al notificador en web.xml, que está mapeado, invoca el strut y va a notificador.java donde declara el WebSocket
	this.email=email;
	this.socket=new WebSocket("ws://localhost:8080/ajedrez-o-matic/notificador/notificador");
	this.socket.onpen = function(evento) {
		alert("Abierto");
	};
	this.socket.onmessage = function(evento) {
		var textoJSON=evento.data;
		var mensaje=JSON.parse(textoJSON);
		
		if (mensaje.tipo=="error") { //<-- Mensaje Error
			var d = new Date();
		    var hour = d.getHours();
			var min=d.getMinutes();
			
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- [ERROR] "+mensaje.texto;
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			comprobarTablas();

			
		} else if (mensaje.tipo=="teReta") { //<-- Mensaje Reto
			jugadorLocal.recibirReto(mensaje.retador);
			
		} else if (mensaje.tipo=="partida") { //<-- Mensaje Partida
			jugadorLocal.mostrarPartida(mensaje);
			
		}else if (mensaje.tipo=="avisoDeLlegada"){ //<-- Mensaje Nuevo Jugador		
			
			var d = new Date();
		    var hour = d.getHours();
			var min=d.getMinutes();
			
			var recienLlegado=mensaje.email;
			addJugador(recienLlegado);
			
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- "+mensaje.texto;
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			comprobarTablas();
			
		}else if (mensaje.tipo=="rechazarReto"){ //<-- Mensaje rechazar Reto
			var d = new Date();
		    var hour = d.getHours();
			var min=d.getMinutes();
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- "+mensaje.texto;
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			comprobarTablas();
			
		}else if(mensaje.tipo=="desconexion"){ //<-- Mensaje Desconexion
			
			var d = new Date();
		    var hour = d.getHours();
			var min=d.getMinutes();
						
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- "+mensaje.texto;
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			comprobarTablas();
			document.getElementById("salaDeEspera").parentNode.removeChild(document.getElementById("salaDeEspera").parentNode.firstChild);			
			cargarJugadores();
			
		}else if(mensaje.tipo=="movimientoValidado"){ //<-- Mensaje Movimiento Validado
			var caso=mensaje.nCaso;
			var sMov=mensaje.sMov;
			actualizarJugador(caso,sMov);
		
		}else if(mensaje.tipo=="movimientoContrario"){ //<-- Mensaje Movimiento Contrario
			var caso=mensaje.nCaso;
			var sOrigen=mensaje.sOrigen;
			var sDestino=mensaje.sDestino;
			var sMov=mensaje.sMov;
			actualizarRival(caso,sOrigen,sDestino,sMov);

		}else if(mensaje.tipo=="proponerTablas"){ //<-- Mensaje Solicitar Tablas
			jugadorLocal.recibirTablas(mensaje.email);
			
		}else if(mensaje.tipo=="contestacionTablas"){ //<-- Mensaje Contestar Tablas
			var contestacion=mensaje.contestacion;
			if(contestacion){
				limpiarTablas();
			}else{
				var d = new Date();
			    var hour = d.getHours();
				var min=d.getMinutes();
							
				var tr1=document.createElement("tr");
				var td1=document.createElement("td");
				var label1=document.createElement("label");
				label1.innerHTML="["+hour + ":" +min + "] -- la peticion de tablas fue rechazada";
				td1.appendChild(label1);			
				tr1.appendChild(td1);
				document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
				comprobarTablas();
			}

		}else if(mensaje.tipo=="disponibles"){ //<-- Mensaje Jugadores han acabado partida y estan disponibles
			var d = new Date();
		    var hour = d.getHours();
			var min=d.getMinutes();
						
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- "+mensaje.email1 + " y "+mensaje.email2+" estan ahora disponibles";
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			//comprobarTablas();
			document.getElementById("salaDeEspera").parentNode.removeChild(document.getElementById("salaDeEspera").parentNode.firstChild);			
			cargarJugadores();
			
		}else if(mensaje.tipo=="abandono"){//<-- Mensaje abandonar
			var d = new Date();
		    var hour = d.getHours();
			var min=d.getMinutes();
						
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- [AVISO] "+mensaje.email +" ha abandonado la partida";
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			comprobarTablas();
			limpiarTablas();
			colorActual="none";
			puedeJugar=false;
		}
	};
};

function limpiarTablas(){
	var list=document.getElementById("zonaTablero").childNodes.length;
	var i=0;
	while(i<list){
	document.getElementById("zonaTablero").removeChild(document.getElementById("zonaTablero").firstChild);
	i++;
	}
	list=document.getElementById("zonaPuntuacion").childNodes.length;
	i=0;
	while(i<list){
		document.getElementById("zonaPuntuacion").removeChild(document.getElementById("zonaPuntuacion").firstChild);
		i++;
	}
	list=document.getElementById("tablaMov").childNodes.length;
	i=0;
	while(i<list){
		document.getElementById("tablaMov").removeChild(document.getElementById("tablaMov").firstChild);
		i++;
	}
}

function comprobarTablas(){
	
	var list=document.getElementById("tablaMov").childNodes.length;
	if(list>10){
		document.getElementById("tablaMov").removeChild(document.getElementById("tablaMov").lastChild);
	}
	var list2=document.getElementById("tablaNotificacion").childNodes.length;
	if(list2>10){
		document.getElementById("tablaNotificacion").removeChild(document.getElementById("tablaNotificacion").lastChild);
	}
}

function actualizarJugador(caso,sMov){
	
	var d = new Date();
    var hour = d.getHours();
	var min=d.getMinutes();
	
	document.getElementById("TurnoJugador").innerHTML="";
	if(caso>=0){
		var padre=document.getElementById("zonaTablero");
		var casOrigenEC;
		var casOrigenEL;
		var casDestinoEC;
		var casDestinoEL;
		if(caso>=20 && caso<30){
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "] -- [VICTORIA] Has derrotado a tu oponente.";
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
			comprobarTablas();
			limpiarTablas();
		}
		else{
			if(colorActual=="b"){
				colorActual="n";
				document.getElementById("TurnoJugador").innerHTML="Turno de NEGRAS";
				if(caso==5){
					casOrigenEC=padre.childNodes[7];
					casDestinoEC=padre.childNodes[5];
					casDestinoEC.childNodes[0].innerHTML=casOrigenEC.childNodes[0].innerHTML;
					casDestinoEC.childNodes[0].className=casOrigenEC.childNodes[0].className;
					casOrigenEC.childNodes[0].innerHTML = "";
				}else if (caso==6){
					casOrigenEL=padre.childNodes[0];
					casDestinoEL=padre.childNodes[3];
					casDestinoEL.childNodes[0].innerHTML=casOrigenEL.childNodes[0].innerHTML;
					casDestinoEL.childNodes[0].className=casOrigenEL.childNodes[0].className;
					casOrigenEL.childNodes[0].innerHTML = "";
				}
			}
			else{ 
				colorActual="b";
				document.getElementById("TurnoJugador").innerHTML="Turno de BLANCAS";
				if(caso==5){
					casOrigenEC=padre.childNodes[63];
					casDestinoEC=padre.childNodes[61];
					casDestinoEC.childNodes[0].innerHTML=casOrigenEC.childNodes[0].innerHTML;
					casDestinoEC.childNodes[0].className=casOrigenEC.childNodes[0].className;
					casOrigenEC.childNodes[0].innerHTML = "";
				}else if (caso==6){
					casOrigenEL=padre.childNodes[56];
					casDestinoEL=padre.childNodes[59];
					casDestinoEL.childNodes[0].innerHTML=casOrigenEL.childNodes[0].innerHTML;
					casDestinoEL.childNodes[0].className=casOrigenEL.childNodes[0].className;
					casOrigenEL.childNodes[0].innerHTML = "";
				}
			}


			
			
			casDestino.childNodes[0].innerHTML = casOrigen.childNodes[0].innerHTML;
			casDestino.childNodes[0].className = casOrigen.childNodes[0].className;
			casOrigen.childNodes[0].innerHTML = "";
			casOrigen.style.backgroundColor = colorOrigen;
			casDestino.style.backgroundColor=colorDestino;
			casOrigen = null;
			casDestino = null;
	        
			var tr1=document.createElement("tr");
			var td1=document.createElement("td");
			var label1=document.createElement("label");
			label1.innerHTML="["+hour + ":" +min + "]  "+sMov;
			td1.appendChild(label1);			
			tr1.appendChild(td1);
			td1.setAttribute("id", "tdMov");
			tr1.setAttribute("id","trMov");
			document.getElementById("tablaMov").insertBefore(tr1, document.getElementById("tablaMov").firstChild);
			comprobarTablas();
			puedeJugar=!puedeJugar;
		}
	}
}

function actualizarRival(caso,sOrigen,sDestino,sMov){
	
	var d = new Date();
    var hour = d.getHours();
	var min=d.getMinutes();
	if(caso>=20 && caso<30){
		var tr1=document.createElement("tr");
		var td1=document.createElement("td");
		var label1=document.createElement("label");
		label1.innerHTML="["+hour + ":" +min + "] -- [DERROTA] Has sido derrotado por tu oponente.";
		td1.appendChild(label1);			
		tr1.appendChild(td1);
		document.getElementById("tablaNotificacion").insertBefore(tr1, document.getElementById("tablaNotificacion").firstChild);
		comprobarTablas();
		limpiarTablas();
		
	}
	else{
		
		if(colorActual=="b"){
			colorActual="n";
			document.getElementById("TurnoJugador").innerHTML="Turno de NEGRAS";
		}
		else{ 
			colorActual="b";
			document.getElementById("TurnoJugador").innerHTML="Turno de BLANCAS";
		}
	
		var origen;
		var destino;
	
		var columnaO=sOrigen.charAt(0);
		var filaO=sOrigen.charAt(1);
	
		var columnaD=sDestino.charAt(0);
		var filaD=sDestino.charAt(1);
		
		switch(columnaO){
			case 'a':
				columnaO=0;
				break;
			case 'b':
				columnaO=1;
				break;
			case 'c':
				columnaO=2;
				break;
			case 'd':
				columnaO=3;
				break;
			case 'e':
				columnaO=4;
				break;
			case 'f':
				columnaO=5;
				break;
			case 'g':
				columnaO=6;
				break;
			case 'h': 
				columnaO=7;
				break;
		}
	
		switch(columnaD){
		case 'a':
			columnaD=0;
			break;
		case 'b':
			columnaD=1;
			break;
		case 'c':
			columnaD=2;
			break;
		case 'd':
			columnaD=3;
			break;
		case 'e':
			columnaD=4;
			break;
		case 'f':
			columnaD=5;
			break;
		case 'g':
			columnaD=6;
			break;
		case 'h': 
			columnaD=7;
			break;
		}
	
		filaO--;
		filaD--;
	
		origen=(filaO*8)+columnaO;
		destino=(filaD*8)+columnaD;
	
		var padre=document.getElementById("zonaTablero");
		var casOrigenEC;
		var casOrigenEL;
		var casDestinoEC;
		var casDestinoEL;
		casOrigen=padre.childNodes[origen];
		casDestino=padre.childNodes[destino];
		
		if(caso==5){
			casOrigenEC=padre.childNodes[origen+3];
			casDestinoEC=padre.childNodes[destino-1];
			casDestinoEC.childNodes[0].innerHTML=casOrigenEC.childNodes[0].innerHTML;
			casDestinoEC.childNodes[0].className=casOrigenEC.childNodes[0].className;
			casOrigenEC.childNodes[0].innerHTML = "";
		}else if (caso==6){
			casOrigenEL=padre.childNodes[origen-4];
			casDestinoEL=padre.childNodes[destino+1];
			casDestinoEL.childNodes[0].innerHTML=casOrigenEL.childNodes[0].innerHTML;
			casDestinoEL.childNodes[0].className=casOrigenEL.childNodes[0].className;
			casOrigenEL.childNodes[0].innerHTML = "";
		}
		
		casDestino.childNodes[0].innerHTML = casOrigen.childNodes[0].innerHTML;
		casDestino.childNodes[0].className = casOrigen.childNodes[0].className;
		casOrigen.childNodes[0].innerHTML = "";
		casOrigen = null;
		casDestino = null;
		
		var tr1=document.createElement("tr");
		var td1=document.createElement("td");
		var label1=document.createElement("label");
		label1.innerHTML="["+hour + ":" +min + "]  "+sMov;
		td1.appendChild(label1);			
		tr1.appendChild(td1);
		td1.setAttribute("id", "tdMov");
		document.getElementById("tablaMov").insertBefore(tr1, document.getElementById("tablaMov").firstChild);
		tr1.setAttribute("id","trMov");
		comprobarTablas();
		puedeJugar=!puedeJugar;
	}
}	

function seleccionarMovimiento(cas){
	if(puedeJugar){
	    if(casOrigen == null && cas.childNodes[0].innerHTML != ""){
	    	 if(esPiezaValida(cas.childNodes[0]) == true){
	    		colorOrigen = cas.style.backgroundColor;
	            cas.style.backgroundColor = 'yellow';
	            casOrigen = cas;
	    	 }
	    }else if(cas == casOrigen && casDestino == null){
	        cas.style.backgroundColor = colorOrigen;
	        casOrigen = null;      
	    }else if (casOrigen != null && casDestino == null){
	        colorDestino = cas.style.backgroundColor;
	        cas.style.backgroundColor = 'yellow';
	        casDestino = cas;
	    }else if( casDestino == cas && casOrigen != null){
	        cas.style.backgroundColor = colorDestino;
	        casDestino = null;
	    }
	}
  
    
}

function esPiezaValida(codigo){
     if(colorActual == codigo.className)
        return true;
    else
        return false;
                                              
}

Jugador.prototype.mueveFicha = function (){
	
	var idF=casOrigen.childNodes[0].getAttribute("id");
	
	var sOrigen="";
	var sDestino="";
	
	var lista=casOrigen.parentNode.childNodes;
	var origen=0;
	var destino=0;
	var length=lista.length;
	var i = 0;
	while(i<length){
		if(lista.item(i)==casOrigen)
			origen=i;
		if(lista.item(i)==casDestino)
			destino=i;
		i++;
	}	
	var filaO=Math.floor(origen/8);
	var columnaO=origen%8;

	
	var filaD=Math.floor(destino/8);
	var columnaD=destino%8;

	filaO++;
	filaD++;
	
	switch(columnaO){
	case 0:
		sOrigen="a"+filaO;
		break;
	case 1:
		sOrigen="b"+filaO;
		break;
	case 2:
		sOrigen="c"+filaO;
		break;
	case 3:
		sOrigen="d"+filaO;
		break;
	case 4:
		sOrigen="e"+filaO;
		break;
	case 5:
		sOrigen="f"+filaO;
		break;
	case 6:
		sOrigen="g"+filaO;
		break;
	case 7: 
		sOrigen="h"+filaO;
	break;
	}
	
	switch(columnaD){
	case 0:
		sDestino="a"+filaD;
		break;
	case 1:
		sDestino="b"+filaD;
		break;
	case 2:
		sDestino="c"+filaD;
		break;
	case 3:
		sDestino="d"+filaD;
		break;
	case 4:
		sDestino="e"+filaD;
		break;
	case 5:
		sDestino="f"+filaD;
		break;
	case 6:
		sDestino="g"+filaD;
		break;
	case 7: 
		sDestino="h"+filaD;
	break;
	}

	var mensaje={ "tipo" : "movimiento",
			"idtablero" :idTablero,
			"color" : colorActual,
			"sorigen" : sOrigen,
			"sdestino" : sDestino,
			"correcto" : -1};
	var cadena=JSON.stringify(mensaje);
	this.enviarMensaje(cadena);
	    
}

Jugador.prototype.mostrarPartida = function(partida) {
	limpiarTablas();
	colorActual="none";
	puedeJugar=false;
	document.getElementById("salaDeEspera").parentNode.removeChild(document.getElementById("salaDeEspera").parentNode.firstChild);			
	cargarJugadores();
	
	
	var idPartida=partida.id;
	idTablero=partida.id;
	var jugadorBlancas=partida.jugadorBlancas;
	var jugadorNegras=partida.jugadorNegras;
	var ganador=partida.ganador;
	var colorTurno=partida.colorTurno;
	
	var disposicion=partida.disposicion;
	var zonaPartida=document.getElementById("partida");
	var etiqueta=document.createElement("label");
	
	var labelDe=document.createElement("label");
	var labelTurno=document.createElement("label");
	labelTurno.setAttribute("id", "TurnoJugador");
	labelDe.innerHTML=jugadorBlancas+"(Blancas) Vs. "+jugadorNegras+" (Negras)<br>"; //aqui podriamos indicar el turno del jugador
	

	if(colorTurno.charAt(1)=="b"){ 
		labelTurno.innerHTML="Turno de BLANCAS";
		colorActual="b";
	}
	else{
		labelTurno.innerHTML="Turno de NEGRAS";
		colorActual="n";
	}
	
	if(colorActual == "b" && this.email == jugadorBlancas){
		puedeJugar = true;
	}else if(colorActual == "n" && this.email == jugadorNegras){
		puedeJugar = true;
	}else{
		puedeJugar = false;
	}
	var tablero = document.getElementById("zonaTablero");
	var puntuacion = document.getElementById("zonaPuntuacion");
	var mov= document.getElementById("tablaMov");
	
	var mover = document.createElement("input");
    mover.type = "button";
    var tablas = document.createElement("input");
    tablas.type = "button";
    var abandonar = document.createElement("input");
    abandonar.type = "button";
    
    mover.setAttribute("value", "Mover");
    tablas.setAttribute("value", "Tablas");
    abandonar.setAttribute("value", "Abandonar");
    
    mover.onclick = function() {jugadorLocal.mueveFicha()};
    tablas.onclick=function(){jugadorLocal.tablas()};
    abandonar.onclick=function(){jugadorLocal.abandonar()};
    
	for (var i=0; i< 64; i++){
	    var  cas = document.createElement("div");
	    cas.id = i;
        cas.className = "casilla";
	    var ficha = document.createElement("label");
        cas.onclick = function() {seleccionarMovimiento(this)};
	    //Lado negro
        switch(i){
            case 56:
                ficha.innerHTML = "&#9820";
                ficha.id = 8;
                ficha.className = "n";
                break;
            case 57:
                ficha.innerHTML = "&#9822";
                ficha.id = 10;
                ficha.className = "n";
                break;
            case 58:
                ficha.innerHTML = "&#9821";
                ficha.id = 12;
                ficha.className = "n";
                break;    
            case 60:
                ficha.innerHTML = "&#9818";
                ficha.id = 15;
                ficha.className = "n";
                break;
            case 59:
                ficha.innerHTML = "&#9819";
                ficha.id = 14;
                ficha.className = "n";
                break;
            case 61:
                ficha.innerHTML = "&#9821";
                ficha.id = 13;
                ficha.className = "n";
                break;
            case 62:
                ficha.innerHTML = "&#9822";
                ficha.id = 11;
                ficha.className = "n";
                break;
            case 63:
                ficha.innerHTML = "&#9820";
                ficha.id = 9;
                ficha.className = "n";
                break;
            case 48:
            case 49:
            case 50:
            case 51:
            case 52:
            case 53:
            case 54:
            case 55:
                ficha.innerHTML = "&#9823"; 
                ficha.id = i-48;
                ficha.className = "n";
                break;
                case 0:
                
            case 0:
                ficha.innerHTML = "&#9814";
                ficha.id = 8;
                ficha.className = "b";
                break;                    
            case 1:
                ficha.innerHTML = "&#9816";
                ficha.id = 10;
                ficha.className = "b";
                break;
            case 2:
                ficha.innerHTML = "&#9815"; 
                ficha.id = 12;
                ficha.className = "b";
                break;   
            case 4:
                ficha.innerHTML = "&#9812";
                ficha.id = 15;
                ficha.className = "b";
                break;
            case 3:
                ficha.innerHTML = "&#9813";
                ficha.id = 14;
                ficha.className = "b";
                break;
            case 5:
                ficha.innerHTML = "&#9815";
                ficha.id = 13;
                ficha.className = "b";
                break;
            case 6:
                ficha.innerHTML = "&#9816";
                ficha.id = 11;
                ficha.className = "b";
                break;
            case 7:
                ficha.innerHTML = "&#9814";
                ficha.id = 9;
                ficha.className = "b";
                break;
            case 8:
            case 9:
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
            case 15:
                ficha.innerHTML = "&#9817"; 
                ficha.id = i-8;
                ficha.className = "b";
                break;
            
        }               
                       
        cas.appendChild(ficha);
	    tablero.appendChild(cas).style.backgroundColor = parseInt((i / 8) + i) % 2 == 0 ? '#ababab' : 'white';
    }
	puntuacion.appendChild(labelDe);
	puntuacion.appendChild(labelTurno);
	tablero.appendChild(mover);
	tablero.appendChild(tablas);
	tablero.appendChild(abandonar);
		
	//etiqueta.textContent=disposicion;
	//zonaPartida.appendChild(etiqueta);
};

Jugador.prototype.tablas =function(){
	var color;
	if(colorActual=="b" && puedeJugar || colorActual=="n" && !puedeJugar)
		color="b";
	else
		color="n";
	var mensaje={ "tipo" : "tablas",
			"idTablero" : idTablero,
			"color" : color};
	var cadena=JSON.stringify(mensaje);
	this.enviarMensaje(cadena);
}

Jugador.prototype.abandonar =function(){
	
	limpiarTablas();
	
	var color;
	if(colorActual=="b" && puedeJugar || colorActual=="n" && !puedeJugar)
		color="b";
	else
		color="n";
	var mensaje={ "tipo" : "abandonar",
			"idTablero" : idTablero,
			"color" : color};
	var cadena=JSON.stringify(mensaje);
	this.enviarMensaje(cadena);
	colorActual="none";
	puedeJugar=false;

}

Jugador.prototype.puedeAbandonar=function(){
	if(colorActual=="b" || colorActual=="n"){
		return false;
	}else return true;
}


Jugador.prototype.recibirReto = function(retador) {
	
	var d = new Date();
    var hour = d.getHours();
	var min=d.getMinutes();
	
	var areaNotificacion=document.getElementById("tablaNotificacion");
	var tabla=document.createElement("table");
	tabla.setAttribute("id", retador); //id de la tabla con el reto de cierto jugador (todos del mismo iguales)
	tabla.setAttribute("border", 1);
	tabla.setAttribute("width","100%");
	var hilera1=document.createElement("tr");	
	var celda1=document.createElement("td");	
	var etiqueta=document.createElement("label");	
	etiqueta.textContent="["+hour + ":" +min + "] -- NUEVO RETO "+retador + " te reta   ";
	
	//areaRetos.appendChild(etiqueta);
	var botonAceptar=document.createElement("input");
	botonAceptar.setAttribute("type", "button");
	botonAceptar.setAttribute("value", "Aceptar");
	botonAceptar.setAttribute("onclick", "jugadorLocal.aceptarReto(\"" + retador + "\")");
	
	var botonRechazar=document.createElement("input");
	botonRechazar.setAttribute("type", "button");
	botonRechazar.setAttribute("value", "Rechazar");
	botonRechazar.setAttribute("onclick", "jugadorLocal.rechazarReto(\"" + retador + "\")");
	
	celda1.appendChild(etiqueta);
	celda1.appendChild(botonAceptar);
	celda1.appendChild(botonRechazar);
	hilera1.appendChild(celda1);
	tabla.appendChild(hilera1);
	areaNotificacion.insertBefore(tabla, areaNotificacion.firstChild);
	comprobarTablas();
	
};

Jugador.prototype.recibirTablas = function(retador) {
	
	var d = new Date();
    var hour = d.getHours();
	var min=d.getMinutes();
	
	var areaNotificacion=document.getElementById("tablaNotificacion");
	var tabla=document.createElement("table");
	tabla.setAttribute("id", retador); //id de la tabla con la peticion de tablas de cierto jugador (todos del mismo iguales)
	tabla.setAttribute("border", 1);
	tabla.setAttribute("width","100%");
	var hilera1=document.createElement("tr");	
	var celda1=document.createElement("td");	
	var etiqueta=document.createElement("label");	
	etiqueta.textContent="["+hour + ":" +min + "] -- PETICION DE TABLAS "+retador + " solicita acabar en tablas   ";
	
	var botonAceptar=document.createElement("input");
	botonAceptar.setAttribute("type", "button");
	botonAceptar.setAttribute("value", "Aceptar");
	botonAceptar.setAttribute("onclick", "jugadorLocal.aceptarTablas(\"" + retador + "\")");
	
	var botonRechazar=document.createElement("input");
	botonRechazar.setAttribute("type", "button");
	botonRechazar.setAttribute("value", "Rechazar");
	botonRechazar.setAttribute("onclick", "jugadorLocal.rechazarTablas(\"" + retador + "\")");
	
	celda1.appendChild(etiqueta);
	celda1.appendChild(botonAceptar);
	celda1.appendChild(botonRechazar);
	hilera1.appendChild(celda1);
	tabla.appendChild(hilera1);
	areaNotificacion.insertBefore(tabla, areaNotificacion.firstChild);
	
};

Jugador.prototype.aceptarTablas = function(retador) {
	var color;
	if(colorActual=="b" && puedeJugar || colorActual=="n" && !puedeJugar)
		color="b";
	if(colorActual=="n" && puedeJugar || colorActual=="b" && !puedeJugar)
		color="n";
	var mensaje={ "tipo" : "contestarTablas",
			"color" : color,
			"idTablero" : idTablero,
			"respuesta" : true};
	var cadena=JSON.stringify(mensaje);
	this.enviarMensaje(cadena);
	var p=document.getElementById(retador).parentNode;
	while(p.firstChild!=null)
		p.removeChild(p.firstChild);
	
	limpiarTablas();
	
};

Jugador.prototype.rechazarTablas = function(retador) {
	var color;
	if(colorActual=="b" && puedeJugar || colorActual=="n" && !puedeJugar)
		color="b";
	if(colorActual=="n" && puedeJugar || colorActual=="b" && !puedeJugar)
		color="n";
	var mensaje={ "tipo" : "contestarTablas",
			"color" : color,
			"idTablero" : idTablero,
			"respuesta" : false};
	var cadena=JSON.stringify(mensaje);
	var o=document.getElementById(retador);
	while(o!=null){ //elimina todos los retos de ese jugador spammer
		o.parentNode.removeChild(o);
		o=document.getElementById(retador);
	}
		
	this.enviarMensaje(cadena);
};

Jugador.prototype.aceptarReto = function(retador) {
	var mensaje={ "tipo" : "contestarReto",
			"emailRetador" : retador,
			"emailRetado" : this.email,
			"respuesta" : true};
	var cadena=JSON.stringify(mensaje);
	this.enviarMensaje(cadena);
	var p=document.getElementById(retador).parentNode;
	while(p.firstChild!=null)
		p.removeChild(p.firstChild);
	
};

Jugador.prototype.rechazarReto = function(retador) {
	var mensaje={ "tipo" : "contestarReto",
			"emailRetador" : retador,
			"emailRetado" : this.email,
			"respuesta" : false};
	var cadena=JSON.stringify(mensaje);
	var o=document.getElementById(retador);
	while(o!=null){ //elimina todos los retos de ese jugador spammer
		o.parentNode.removeChild(o);
		o=document.getElementById(retador);
	}
		
	this.enviarMensaje(cadena);
};

Jugador.prototype.enviarMensaje = function(mensaje) {
	this.socket.send(mensaje);
};

Jugador.prototype.retar = function(emailRetado) {
	var reto = new Reto(jugadorLocal.email, emailRetado);
	var cadena = JSON.stringify(reto);
	this.enviarMensaje(cadena);
};

Jugador.prototype.save = function() {
	sessionStorage.jugadorLocal = JSON.stringify(jugadorLocal);
};

Jugador.prototype.remove = function() {
	this.socket.close();
	sessionStorage.removeItem("jugadorLocal");
	jugadorLocal=null;
};

Jugador.prototype.desconectar = function() {
	if(this.puedeAbandonar()){
		var req=new XMLHttpRequest();
		req.open("post", "Desconectar.action");
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.onreadystatechange=function() {
			if (req.readyState==4) {
				var result=JSON.parse(req.responseText);
				if (result.resultado=="OK") {
					jugadorLocal.remove();
					document.location.reload();
				};
			};
		};
	req.send();
	}else alert("Primero abandona la partida en curso");
};

/*** Clase Reto ***/
function Reto(emailRetador, emailRetado) {
	this.tipo="reto";
	this.emailRetador=emailRetador;
	this.emailRetado=emailRetado;
}